#pragma once
// Graph Interface
#include "SFC_Types.h"
#include "GraphLib.h"

class PlatformSystem
{
public:
	/* Communicate Support */
	BlockingQueue<SFC_Event> EventQueue;

	/* Host Environment */
	virtual void CreateHostInterface(const char *title, int& w, int& h) = 0;
	virtual Surface GetBufferSurface() = 0;
	virtual void UpdateWindow(Surface surface) = 0;
	virtual void StartListenWithThread() = 0;
	virtual void StopListenWithThread() = 0;

	/* Utils */
	virtual void Delay(Uint32 ms) = 0;
};

extern PlatformSystem *OutsideSystem;